home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE PGCD
- C
- C PURPOSE
- C DETERMINE GREATEST COMMON DIVISOR OF TWO POLYNOMIALS
- C
- C USAGE
- C CALL PGCD(X,IDIMX,Y,IDIMY,WORK,EPS,IER)
- C
- C DESCRIPTION OF PARAMETERS
- C X - VECTOR OF COEFFICIENTS FOR FIRST POLYNOMIAL,
- C ORDERED FROM SMALLEST TO LARGEST POWER
- C IDIMX - DIMENSION OF X
- C Y - VECTOR OF COEFFICIENTS FOR SECOND POLYNOMIAL,
- C ORDERED FROM SMALLEST TO LARGEST POWER.
- C THIS IS REPLACED BY GREATEST COMMON DIVISOR
- C IDIMY - DIMENSION OF Y
- C WORK - WORKING STORAGE ARRAY
- C EPS - TOLERANCE VALUE BELOW WHICH COEFFICIENT IS
- C ELIMINATED DURING NORMALIZATION
- C IER - RESULTANT ERROR CODE WHERE
- C IER=0 NO ERROR
- C IER=1 X OR Y IS ZERO POLYNOMIAL
- C
- C REMARKS
- C IDIMX MUST BE GREATER THAN IDIMY
- C IDIMY=1 ON RETURN MEANS X AND Y ARE PRIME, THE GCD IS A
- C CONSTANT. IDIMX IS DESTROYED DURING COMPUTATION.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C PDIV
- C PNORM
- C
- C METHOD
- C GREATEST COMMON DIVISOR OF TWO POLYNOMIALS X AND Y IS
- C DETERMINED BY MEANS OF EUCLIDEAN ALGORITHM. COEFFICIENT
- C VECTORS X AND Y ARE DESTROYED AND GREATEST COMMON
- C DIVISOR IS GENERATED IN Y.
- C
- C ..................................................................
- C
- SUBROUTINE PGCD(X,IDIMX,Y,IDIMY,WORK,EPS,IER)
- DIMENSION X(1),Y(1),WORK(1)
- C
- C DIMENSION REQUIRED FOR VECTOR NAMED WORK IS IDIMX-IDIMY+1
- C
- 1 CALL PDIV(WORK,NDIM,X,IDIMX,Y,IDIMY,EPS,IER)
- IF(IER) 5,2,5
- 2 IF(IDIMX) 5,5,3
- C
- C INTERCHANGE X AND Y
- C
- 3 DO 4 J=1,IDIMY
- WORK(1)=X(J)
- X(J)=Y(J)
- 4 Y(J)=WORK(1)
- NDIM=IDIMX
- IDIMX=IDIMY
- IDIMY=NDIM
- GO TO 1
- 5 RETURN
- END